from PIL import Image
import cairosvg
from pathlib import Path
import io

def convert_svg_to_ico(svg_path, ico_path, sizes=[16, 32, 48, 64, 128, 256]):
    """将 SVG 图标转换为 ICO 格式"""
    try:
        # 确保输出目录存在
        Path(ico_path).parent.mkdir(parents=True, exist_ok=True)
        
        # 将 SVG 转换为不同尺寸的 PNG
        images = []
        for size in sizes:
            # 使用 cairosvg 将 SVG 转换为 PNG
            png_data = cairosvg.svg2png(
                url=svg_path,
                output_width=size,
                output_height=size
            )
            
            # 从二进制数据创建图像
            img = Image.open(io.BytesIO(png_data))
            images.append(img)
        
        # 保存为 ICO 文件
        images[0].save(
            ico_path,
            format='ICO',
            sizes=[(img.width, img.height) for img in images],
            append_images=images[1:]
        )
        
        return True
        
    except Exception as e:
        print(f"转换图标失败: {str(e)}")
        return False 